using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Abp.Domain.Services;


namespace SOEI.Solution.Integratedes.Organization.DomainService
{
	/// <summary>
	/// 领域服务接口定义
	///</summary>
	public interface IOEconomyOrganiCancelManager : IDomainService
	{
		#region -------------------------------------------------辅助工具生成----------------------------------------------
		/// <summary>
		/// 返回表达式数的实体信息即IQueryable类型(可选择部分字段)
		/// </summary>
		/// <returns>IQueryable</returns>
		IQueryable<OEconomyOrganiCancel> QueryEntityListAsNoTracking();
		/// <summary>
		/// 返回表达式数的实体信息即IQueryable类型
		/// </summary>
		/// <returns>IQueryable</returns>
		IQueryable<OEconomyOrganiCancel> Query();
		/// <summary>
		/// 返回性能更好的IQueryable类型，但不包含EF Core跟踪标记
		/// </summary>
		/// <returns>IQueryable</returns>
		IQueryable<OEconomyOrganiCancel> QueryAsNoTracking();
		/// <summary>
		/// 【OEconomyOrganiCancel】根据Id查询实体信息
		/// </summary>
		/// <param name="id"></param>
		/// <returns>实体</returns>
		Task<OEconomyOrganiCancel> FindByIdAsync(string id);
		/// <summary>
		/// 【OEconomyOrganiCancel】检查实体是否存在
		/// </summary>
		/// <returns>是否成功</returns>
		Task<bool> IsExistAsync(string id);
		/// <summary>
		/// 【OEconomyOrganiCancel】添加实体
		/// </summary>
		/// <param name="entity">实体</param>
		/// <returns></returns>
		Task<OEconomyOrganiCancel> CreateAsync(OEconomyOrganiCancel entity);
		/// <summary>
		/// 【OEconomyOrganiCancel】修改实体
		/// </summary>
		/// <param name="entity">实体</param>
		/// <returns></returns>
		Task UpdateAsync(OEconomyOrganiCancel entity);
		/// <summary>
		/// 【OEconomyOrganiCancel】删除实体
		/// </summary>
		/// <param name="id"></param>
		/// <returns></returns>
		Task DeleteAsync(string id);
		/// <summary>
		/// 【OEconomyOrganiCancel】批量删除
		/// </summary>
		/// <param name="input">Id的集合</param>
		/// <returns></returns>
		Task BatchDelete(List<string> input);
		#endregion

		#region -------------------------------------------------用户自定义------------------------------------------------
		/*请在此扩展领域服务接口*/

		/// <summary>
		/// 获取新的序列编码
		/// </summary>
		/// <returns></returns>
		string GetNewSequenceCode();

		/// <summary>
		/// 是否存在指定编号的经济机构
		/// </summary>
		/// <param name="OrgniID"></param>
		/// <returns></returns>
		Task<bool> IsExistCancelAsync(string OrgniID);
		#endregion
	}
}
